package com.haredot.utils;

import com.haredot.vo.R;
import org.springframework.validation.BindingResult;

import java.util.HashMap;
import java.util.Map;
import java.util.function.Supplier;

public class ValidUtils {
    /**
     * 处理校验结果，并返回 最终执行的结果 R
     */
    public static R<?> toResult(BindingResult bindingResult, Supplier<R<?>> supplier) {
        if (bindingResult.hasErrors()) {
            Map<String, String> errors = bindingResult.getFieldErrors().stream()
                    .map(fieldError -> Map.of(fieldError.getField(), fieldError.getDefaultMessage()))
                    .reduce(new HashMap<>(), (map, error)-> {
                        map.putAll(error);
                        return map;
                    },  (a, b)-> a);

            return R.fail("参数校验失败").data(errors) ;
        }

        return supplier.get();
    }

}
